package com.ls.lserp.modules.material.web;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.collections.map.HashedMap;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.ls.lserp.common.config.Global;
import com.ls.lserp.common.persistence.Page;
import com.ls.lserp.common.web.BaseController;
import com.ls.lserp.modules.material.entity.MaterialStock;
import com.ls.lserp.modules.material.service.MaterialStockService;

import freemarker.template.Configuration;

@Controller
@RequestMapping(value = "${adminPath}//")
public class MaterialStockController extends BaseController {

	
	@Autowired
	private MaterialStockService materialStockService;
	@Autowired
	Configuration freemarkerConfiguration;
	
	
	/**
	 * 原辅料库存一览画面
	 * 
	 * 
	 * @return
	 */
	@RequestMapping(value = { "" })
	public String materialStock() {

		return "modules/material/materialStock";

	}
	
	/**
	 * 拼接一览画面
	 * @param values 
	 * 
	 * 
	 * @return
	 */
	@RequiresPermissions("")
	@RequestMapping(value = { "searchList" })
	@ResponseBody
	public String searchList(MaterialStock materialStock, HttpServletRequest request, HttpServletResponse response,
			Model model, String[] values) throws Exception {
			Map<Object, Object> listMap = new HashMap<Object, Object>();
			// ajax回调时使用的一览list名
			request.setAttribute("listNames", "materialStock");
			// 画面取得的检索项目
			String materialTypeCD = materialStock.getMaterialTypeCD();
			String materialUseType = materialStock.getMaterialUseType();
			String materialNameCN = materialStock.getMaterialNameCN();
			String materialColor = materialStock.getMaterialColor();
			String materialComposition = materialStock.getMaterialComposition();
			// 拼接字符串供分页使用
			String searchParam = "&materialTypeCD=" + materialTypeCD+"&materialUseType=" + materialUseType+"&materialNameCN="+ materialNameCN+"&materialColor="+ materialColor+"&materialComposition="+ materialComposition;
			//放到Attribute里，使用Global类里面的SEARCH_PAEAM作为key
			request.setAttribute(Global.SEARCH_PAEAM, searchParam);
			// 查询一览页面数据
			Page<MaterialStock> page = materialStockService.findMaterialStockList(new Page<MaterialStock>(request, response),
					materialStock);
			// 读取文件生成字符串
			String strUri = request.getContextPath() + Global.getAdminPath();
			String strHtml = "";
			Map<String, Object> map = new HashedMap();
			map.put("adminUri", strUri);
			map.put("materialList", page.getList());
			map.put("pageNo", page.getPageNo());
			map.put("pageSize", page.getPageSize());
			strHtml = FreeMarkerTemplateUtils
					.processTemplateIntoString(freemarkerConfiguration.getTemplate("MaterialStockList.ftl"), map);
			listMap.put("materialStock", strHtml);
			listMap.put("page", page.getHtml());
			// ajax返回结果
			return renderString(response, listMap);
		}
	
	
	
	
	/**
	 * 
	 * 功能：Java读取txt文件的内容 1：先获得文件句柄 2：获得文件句柄当做是输入一个字节码流，需要对这个输入流进行读取
	 * 3：读取到输入流后，需要读取生成字节流
	 * 
	 * @param filePath
	 * @return html
	 */
	public String readTxtFile(String filePath) {
		String strHtml = "";
		try {
			String encoding = "UTF-8";
			File file = new File(filePath);
			// 判断文件是否存在
			if (file.isFile()) {
				InputStreamReader read = new InputStreamReader(
						// 考虑到编码格式
						new FileInputStream(file), encoding);
				BufferedReader bufferedReader = new BufferedReader(read);
				String lingText = null;
				while ((lingText = bufferedReader.readLine()) != null) {
					strHtml += lingText;
				}
				read.close();
			} else {

			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return strHtml;
	}
	
	/**
	 * 查看一条物料出入库信息
	 * 
	 * @return
	 */
	@RequiresPermissions("")
	@RequestMapping(value = {"viewMaterialStock"})
	public String viewMaterialStock(MaterialStock materialStock, HttpServletRequest request, HttpServletResponse response,
			Model model){
		
		model.addAttribute("materialStock",materialStock);
		return "modules/material/materialStockShow";
	}
	
}
